package q524_findLongestWord;

import java.util.List;
import java.util.Objects;

public class Solution {
    /*
    使用双指针可以很简单的解决该题
    首先两个指针分别指向dict中的单词和可以删减的单词
    如果字符相等 则同时移动 否则只移可删除的
    最后看p2有没有到达单词最后
    如果到了 则开始比较 是否最长 是否字典序小 即可
     */
    public String findLongestWord(String s, List<String> dictionary) {
        String res = "";
        int p1 , p2;
        for (String str : dictionary) {
            p1 = 0;
            p2 = 0;
            while (p1 < s.length() && p2 < str.length()) {
                if (s.charAt(p1) == str.charAt(p2)) ++p2;
                ++p1;
            }

            if ((p2 == str.length()) && ((Objects.equals(res, "") || (p2 > res.length()) || (p2 == res.length() && str.compareTo(res) < 0)))) res = str;
        }

        return res;
    }
}
